package monpkg.rmi;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.server.Unreferenced;

import monpkg.entities.Address;

/**
 * @author Yannick Bouchot
 * @author Jonathan Romero
 */

public class FAddressImpl extends UnicastRemoteObject implements IAddressImpl,
		Unreferenced {

	private static final long serialVersionUID = 1L;
	private Address a;

	/**
	 * methode permettant d'implementer l'interface IAddressImpl ainsi que
	 * definir les parametre necessaire a l'afresse
	 */
	public FAddressImpl() throws RemoteException {
		super();
	}

	
	/**
	 * methode permettant d'implementer l'interface IAddressImpl ainsi que
	 * definir les parametre necessaire a l'afresse
	 */
	public FAddressImpl(String number, String street, String city,
			String country) throws RemoteException {
		super();

		a.setStreet(number);
		a.setStreet(street);
		a.setCity(city);
		a.setCountry(country);
	}

	/**
	 * methode permettant de creer une adresse avec tout ses parametres et la
	 * retourner
	 */
	@Override
	public Address newAddress(String number, String street, String city,
			String country) throws RemoteException {
		Address a = new Address(number, street, city, country);
		return a;
	}

	/**
	 * methode permettant la creations de la factory pour l'adresse
	 */
	// Le serveur peut créer plusieurs objets, en donnant leur référence
	// distante
	public IAddressImpl newFactory(String number, String street, String city,
			String country) throws RemoteException {
		FAddressImpl a = new FAddressImpl(number, street, city, country);
		return a;
	}

	// Le serveur peut créer plusieurs objets, en donnant leur référence
	// distante
	public IAddressImpl newFactory() throws RemoteException {
		FAddressImpl a = new FAddressImpl();
		return a;
	}

	
	// Dès que les objets ne sont plus référencés, ils sont supprimés du serveur
	@Override
	public void unreferenced() {
		System.out.println("Suppression de la référence de Adresse : "
				+ this.toString());
	}


	@Override
	public Address newAddress() throws RemoteException {
		// TODO Auto-generated method stub
		return null;
	}

}
